题解:P15929 [TOPC 2021] Olympic Ranking

288 字
1 分钟
题解:P15929 [TOPC 2021] Olympic Ranking

题面传送门:P15929 [TOPC 2021] Olympic Ranking

变量意义 (题中未给出)

gg 为英文单词 gold 缩写,代表金牌个数;
ss 为英文单词 silver 缩写,代表银牌个数;
bb 为英文单词 bronze 缩写,代表铜牌个数。

题目大意#

给出各国金银铜牌获得数量,根据特定排序规则寻找第一名。

思路讲解#

注意到题中每个国家有多个信息,且需要根据一部分信息对其排序,因此可使用结构体,此时排序的重点在于排序规则的定义。

代码实现#

结构体定义 & 排序规则
struct oly{
int g,s,b;
string name;
}a[305];
bool cmp(oly x,oly y){
if(x.g!=y.g) return x.g>y.g;//如果金牌数不等,则多者在前
if(x.s!=y.s) return x.s>y.s;//如果银牌数不等,则多者在前
return x.b>y.b;//其他情况则按铜牌数排序
}
完整代码
#include<bits/stdc++.h>
using namespace std;
int n;
struct oly{
int g,s,b;
string name;
}a[305];
bool cmp(oly x,oly y){
if(x.g!=y.g) return x.g>y.g;
if(x.s!=y.s) return x.s>y.s;
return x.b>y.b;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].g>>a[i].s>>a[i].b;
getline(cin,a[i].name);//输入国名可能包含空格
a[i].name.erase(0,1);//国名会在前多一个空格,使用此函数进行删除
}
sort(a+1,a+n+1,cmp);
cout<<a[1].name;
return 0;
}

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

题解:P15929 [TOPC 2021] Olympic Ranking
https://zhedaotixuanbo.pages.dev/posts/题解:P15929 [TOPC 2021] Olympic Ranking/
作者
zhedaotixuanbo
发布于
2026-03-27
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
zhedaotixuanbo
这道题选什么? _____!
公告
分类
标签
站点统计
文章
17
分类
1
标签
21
总字数
6,295
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
ZTXB v1.0.0
文章许可
CC BY-NC-SA 4.0